package com.magina.redis.config;



import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;


/**
 * redis 配置文件 jedis实现
 */
@Configuration
@PropertySource("classpath:redis.config.properties")
@ConfigurationProperties(prefix = "spring.jedis")
@Data
public class RedisConfig {


    private  String host;


    private  int port;



    private  int max_active;
    //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例，默认值也是8。


    private  int max_idle ;


    //等待可用连接的最大时间，单位毫秒，默认值为-1，表示永不超时。如果超过等待时间，则直接抛出JedisConnectionException
    private  int max_wait;


    //连接超时的时间　　
    private  int timeout;

    // 在borrow一个jedis实例时，是否提前进行validate操作；如果为true，则得到的jedis实例均是可用的；
    private  boolean test_on_borrow= true;

    private static JedisPool jedisPool = null;



    @Bean
    public JedisPool initJedisPool(){
        try{
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(max_active);
            config.setMaxIdle(max_idle);
            config.setMaxWaitMillis(max_wait);
            config.setTestOnBorrow(test_on_borrow);
            jedisPool = new JedisPool(config, host, port);

            return jedisPool;
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }



    }





}
